package com.dys.designpattern.simplefactory.applypay.controller;

import com.dys.designpattern.simplefactory.applypay.service.AliPay;
import com.dys.designpattern.simplefactory.applypay.service.IPay;
import com.dys.designpattern.simplefactory.applypay.service.WeChatPay;

/**
 * @Author: 疾风
 * @ClassName: BeforeFactory
 * @Description: 使用工厂模式之前
 * @CreateDate: 2024/05/14
 * @Version: v1.0.0
 */
public class BeforeFactory {

    /**
     * 在 Java 开发中如果将对象的创建和使用耦合在一起，不利于后期的维护，这就需要引入工厂模式。
     * 工厂模式将对象的创建和使用分离，降低代码的耦合度。
     * 定义一个创建对象的接口，让其子类自己决定实例化哪一个工厂类，工厂模式使其创建过程延迟到子类进行。
     * 引入工厂模式之后，调用方无需关注对象的创建过程，根据传参调用对应的实例对象，后续新增或更新对象只需要修改工厂方法即可，降低代码的维护成本。
     * @param payType 支付类型
     */
    public static void order(int payType) {
        IPay pay = null;
        // 根据type调用不同的支付
        if (payType == 1) {
            pay = new WeChatPay();
        } else if (payType == 2) {
            pay = new AliPay();
        } else {
            System.out.println("没有该种支付方式");
        }
        // 2.调用支付
        pay.pay();
    }

    public static void main(String[] args) {
        order(1);
    }
}
